<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		
		<script>
			"use strict"
			
			var obj = {username: "kobe"}
			function foo(data){
				console.log(this, data)
			}
			// 传入参数的形式
			foo.call(obj, 33) // 直接从第二个参数开始, 依次传入
			foo.call(obj, [33]) // 第二个参数必须是一个数组, 传入的参数放入数组里
			console.log("\n")
			
			// bind的特点: 绑定完this不会立即调用当前函数, 而是将当前函数返回
			// bind传参的方式同call一样
			var bar = foo.bind(obj, 33)
			console.log(bar)
			bar() // 等于 foo.bind(obj)()
			foo.bind(obj, 33)()
			console.log("\n")
			
			setInterval(function(){
				console.log(this)
			}.bind(obj), 1000)
		</script>
	</body>
</html>
